<?php

namespace Transaccion\Controller\Service;

use Zend\Db\Adapter\Adapter;
use Componentes\Controller\UtilsArrayController;
use Transaccion\Model\Entity\Especialidad;
use Transaccion\Controller\Service\GenericService;
use Transaccion\Model\Dao\EspecialidadDAO;

//SERVICIO
class EspecialidadService extends GenericService {

    /**
     * @var Zend\Db\Adapter\Adapter 
     */
    private $dbAdapter;
    private static $especialidadService;

    /**
     * @param \Zend\Db\Adapter\Adapter $dbAdapter
     */
    private function __construct(Adapter $dbAdapter) {
        $this->dbAdapter = $dbAdapter;
    }

    public static function getInstance($adapter) {
        if (self::$especialidadService == null) {
            self::$especialidadService = new EspecialidadService($adapter);
        }
        return self::$especialidadService;
    }

    public function getEspecialidadDao() {
        return EspecialidadDAO::getInstance($this->dbAdapter);
    }

    /**
     * @param type $id
     * @return type
     */
    public function getRegistro($id) {
        $data = null;
        $success = false;
        $especialidad = $this->obtenerEspecialidadSegunId($id);
        if ($especialidad->getSespeid() != null) {
            $data[0] = $especialidad->objectToArray();
            $success = true;
        }
        return UtilsArrayController::organizarOutput($success, $data, null);
    }

//------Retornan los objetos-------

    /**
     * Dado el id del especialidad se trae el registro asociado
     * convirtiendolo primero en objeto y luego lo retorna
     * @param $id type string
     * @return Objeto Especialidad
     */
    public function obtenerEspecialidadSegunId($id) {
        $registros = $this->getEspecialidadDao()->getRegistro($id);
        $data = UtilsArrayController::llenarData($registros);
        $especialidad = new Especialidad($data[0]);
        return $especialidad;
    }

//-----------------------------------
}
